package com.my.ecommercesystem.service;

import com.github.pagehelper.Page;
import com.my.ecommercesystem.dto.CartDto;
import com.my.ecommercesystem.entity.Order_Item;


import java.util.List;

public interface ShopCartService {
    List<CartDto> queryShopCartByUserId(Integer id);

    boolean addShopCart(CartDto shopCartDto);

    /**
     * 查询用户的购物车商品数量
     * @param id
     * @return
     */
    Integer queryShopCartCount(Integer id);

    /**
     * 查询用户的所以购物车商品
     * @param id
     * @param page
     * @param size
     * @return
     */
    Page<CartDto> queryAllShopCart(Integer id, Integer page, Integer size) throws Exception;

    /**
     * 将商品添加到购物车
     * @param uid 用户的id
     * @param gid 商品的id
     * @param num 添加的商品数量
     * @param subtotal 添加的商品小计
     */
    void addToCart(Integer uid,Integer gid,Integer num,double subtotal);


    /**
     * 插入购物车数据
     * @param shopCartDto 购物车数据
     * @return受影响的行数
     */
    Integer insertShopCart(CartDto shopCartDto);

    /**
     * 修改购物车中商品的数量和小计
     * @param cart_id 购物车id
     * @param goods_number 新的数量
     * @param goods_subtotal 新的小计
     * @return 受影响的行数
     */
    Integer updateCartNumAndSubtotalByCartId(Integer cart_id,Integer goods_number,double goods_subtotal);

    /**
     * 查询某用户在购物车添加的某商品的详情
     * @param user_id 用户的id
     * @param goods_id 商品的id
     * @return 匹配的购物车详情，如果该用户没有将该商品添加到购物车，则返回null
     */
    CartDto queryCarByUseridAndGoodsid(Integer user_id,Integer goods_id);

    /**
     * 计算购物车总价
     * @param user_id
     * @return
     */
    double sumCartsubtotal(Integer user_id);

    /**
     * 计算购物车总商品数量
     * @param user_id
     * @return
     */
    Integer sumCartallcount(Integer user_id);

    /**
     * 删除单个购物车商品
     * @param cart_id
     * @return
     */
    boolean deleteShorCartByCartId(Integer cart_id);


    boolean addOrder_Item(Order_Item order_item,CartDto shopCartDto)throws Exception;

    boolean deleteOrder_Item(Integer id)throws Exception;
}
